package com.lvmama.client.rhino;

import com.github.pagehelper.PageInfo;
import com.lvmama.common.result.Result;
import com.lvmama.pojo.dto.rhino.searchanalysis.*;
import com.lvmama.pojo.entity.rhino.searchanalysis.FlowSearchStation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@FeignClient("rhino-web-service")
@RequestMapping("${server.servlet.context-path}")
public interface SearchStatisticsClient {

    @RequestMapping(method = RequestMethod.POST,value = "/flowSearch/getSearchFlowByChannel",consumes = "application/json")
    Result<List<FlowSearchStatistics>> getSearchFlowByChannel(@RequestBody  SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "/flowSearch/getSearchFlowByDate", consumes = "application/json")
    Result<List<FlowSearchStatistics>> getSearchFlowByDate(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.GET,value = "/flowSearch/getDeviceCodeApp",consumes = "application/json")
    List<String> getDeviceCodeApp();

    @RequestMapping(method = RequestMethod.GET,value = "/flowSearch/getDeviceCodeByLikeName",consumes = "application/json")
    List<String> getDeviceCodeByLikeName(@RequestParam("codeName") String codeName);

    @RequestMapping(method = RequestMethod.POST,value = "/flowSearch/getStations",consumes = "application/json")
    Result<List<FlowSearchStation>> getStations();

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getKeyByType",consumes = "application/json")
    Result<List<FlowSearchKeyType>> getKeyByType(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getKeyByDate",consumes = "application/json")
    Result<List<FlowSearchKeyType>> getKeyByDate(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getKeyByAmount",consumes = "application/json")
    Result<PageInfo<FlowSearchKey>> getKeyByAmount(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getDetailByStation" ,consumes = "application/json")
    Result<List<FlowSearchKey>> getDetailByStation(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getDetailByType" ,consumes = "application/json")
    Result<List<FlowSearchKey>> getDetailByType(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getKeyByCategory" ,consumes = "application/json")
    Result<List<FlowSearchArrivalKey>> getKeyByCategory(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getKeyByKeyword" ,consumes = "application/json")
    Result<List<FlowSearchArrivalKey>> getKeyByKeyword(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getKeyByXgword" ,consumes = "application/json")
    Result<List<FlowSearchArrivalKey>> getKeyByXgword(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getSwitchByCategory" ,consumes = "application/json")
    Result<List<FlowSearchJump>> getSwitchByCategory(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getSwitchByDate" ,consumes = "application/json")
    Result<List<FlowSearchJump>> getSwitchByDate(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getJumpByCategory" ,consumes = "application/json")
    Result<List<FlowSearchJump>> getJumpByCategory(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getJumpByDate" ,consumes = "application/json")
    Result<List<FlowSearchJump>> getJumpByDate(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getSwitchByResult" ,consumes = "application/json")
    Result<List<FlowSearchJump>> getSwitchByResult(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getMoJumpByResult" ,consumes = "application/json")
    Result<List<FlowSearchJump>> getMoJumpByResult(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getResultByCategory" ,consumes = "application/json")
    Result<List<FlowSearchResult>> getResultByCategory(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getResultByDate" ,consumes = "application/json")
    Result<List<FlowSearchResult>> getResultByDate(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getResultByKey" ,consumes = "application/json")
    Result<PageInfo<FlowSearchResult>> getResultByKey(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getFilterList" ,consumes = "application/json")
    Result<List<FlowSearchFilter>> getFilterList(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getFilterNameByCode" ,consumes = "application/json")
    Result<FlowSearchFilterCondition> getFilterNameByCode(@RequestBody FlowSearchFilterCondition queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/insertFilter" ,consumes = "application/json")
    boolean insertFilter(@RequestBody FlowSearchFilterCondition queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getPagingByCategory" ,consumes = "application/json")
    Result<List<FlowSearchPaging>> getPagingByCategory(@RequestBody SearchStatisticsQuery queryParam);

    @RequestMapping(method = RequestMethod.POST,value = "flowSearch/getPagingByPageCode" ,consumes = "application/json")
    Result<List<FlowSearchPaging>> getPagingByPageCode(@RequestBody SearchStatisticsQuery queryParam);
}
